Please open Telegram to view this post
VIEW IN TELEGRAM
🧱 Для чего нужны плоские контейнеры и как их использовать
💡 В C++23 появились долгожданные «плоские» контейнеры:
❗️ Ключевые особенности:
• поиск O(log N) как в обычном set, но быстрее на практике
• итерация в разы быстрее классических контейнеров
• потребление памяти меньше на сотни процентов
• вставка и удаление катастрофически медленные O(N)
Основная идея — хранить данные в отсортированном векторе и использовать бинарный поиск.
Идеально подходят для сценариев «заполнил один раз — читаю много раз». Особенно эффективны при работе с миллионами элементов и компактными ключами.
⚠️ Не используйте их, если планируете частые вставки и удаления — в таких случаях классические
🔜 Статья
Библиотека C/C++ разработчика
💡 В C++23 появились долгожданные «плоские» контейнеры:
flat_set
, flat_map
, flat_multiset
и flat_multimap
— адаптеры, которые используют обычные векторы вместо деревьев.❗️ Ключевые особенности:
• поиск O(log N) как в обычном set, но быстрее на практике
• итерация в разы быстрее классических контейнеров
• потребление памяти меньше на сотни процентов
• вставка и удаление катастрофически медленные O(N)
Основная идея — хранить данные в отсортированном векторе и использовать бинарный поиск.
std::flat_map
даже хранит ключи и значения в отдельных контейнерах для лучшей производительности.Идеально подходят для сценариев «заполнил один раз — читаю много раз». Особенно эффективны при работе с миллионами элементов и компактными ключами.
⚠️ Не используйте их, если планируете частые вставки и удаления — в таких случаях классические
std::set/map
или unordered-контейнеры
будут эффективнее.Библиотека C/C++ разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
🥴 Средний разработчик меняет работу каждые 1,5 года
И это не потому, что мы такие непостоянные. Просто рынок показывает свое истинное лицо быстрее, чем успевают напечатать визитки.
Поэтому мы собираем инсайды от тех, кто находится в окопах digital-трансформации каждый день. От джуниоров, которые только въезжают в профессию, до сеньоров, повидавших всякого.
😳 О чем говорим откровенно:
— Job-hopping и что за этим стоит
— Red flags, которые мгновенно убивают мотивацию
— Реальные источники вакансий (не те, что рекламируют)
— Боль от общения с рекрутерами
— Сколько этапов отбора — норма, а сколько — издевательство
Когда мы объединим опыт сотен IT-специалистов, получится настоящая карта того, как устроена индустрия. Не по версии HR-отделов, а по версии тех, кто пишет код, тестирует продукты и двигает технологии вперед.
🚀 Участвовать в исследовании → https://clc.to/9aaXVg
И это не потому, что мы такие непостоянные. Просто рынок показывает свое истинное лицо быстрее, чем успевают напечатать визитки.
Поэтому мы собираем инсайды от тех, кто находится в окопах digital-трансформации каждый день. От джуниоров, которые только въезжают в профессию, до сеньоров, повидавших всякого.
😳 О чем говорим откровенно:
— Job-hopping и что за этим стоит
— Red flags, которые мгновенно убивают мотивацию
— Реальные источники вакансий (не те, что рекламируют)
— Боль от общения с рекрутерами
— Сколько этапов отбора — норма, а сколько — издевательство
Когда мы объединим опыт сотен IT-специалистов, получится настоящая карта того, как устроена индустрия. Не по версии HR-отделов, а по версии тех, кто пишет код, тестирует продукты и двигает технологии вперед.
🚀 Участвовать в исследовании → https://clc.to/9aaXVg
Please open Telegram to view this post
VIEW IN TELEGRAM
📰 Свеженькое из мира C++
Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++.
🥳 Интересное:
• Концепты, корутины и многое другое в высокопроизводительных службах
• Алгоритм массово-параллельной работы с сокетами для C++
• Для чего нужны плоские контейнеры и как их использовать
😎 Полезное:
• Работа с файлами и файловой системой в C++17
• Как вызвать Python из C — гайд для ресерчеров и хардкорных разработчиков
• Чек-лист для Code Review
• Debugging: инструменты для поиска багов
Библиотека C/C++ разработчика #свежак
Недельный дайджест новостей о разных аспектах программирования и интересных проектах в мире C++.
🥳 Интересное:
• Концепты, корутины и многое другое в высокопроизводительных службах
• Алгоритм массово-параллельной работы с сокетами для C++
• Для чего нужны плоские контейнеры и как их использовать
😎 Полезное:
• Работа с файлами и файловой системой в C++17
• Как вызвать Python из C — гайд для ресерчеров и хардкорных разработчиков
• Чек-лист для Code Review
• Debugging: инструменты для поиска багов
Библиотека C/C++ разработчика #свежак
❗Вакансии «Библиотеки программиста»
Привет! Мы ищем контент-менеджеров, которые будут вести наши телеграм-каналы о разработке.
👾 Требования:
— знать принципы залетающего контента
— разбираться в темах, связанных с разработкой
Большим плюсом будет навык программирования на каких-либо языках.
✨ Условия:
— удаленка
— частичная занятость
— сдельная оплата в зависимости от количества задач
🔥 Оставляйте отклик, и мы свяжемся с вами: https://forms.gle/o4BZnsQ526JoqsCq9
Привет! Мы ищем контент-менеджеров, которые будут вести наши телеграм-каналы о разработке.
👾 Требования:
— знать принципы залетающего контента
— разбираться в темах, связанных с разработкой
Большим плюсом будет навык программирования на каких-либо языках.
✨ Условия:
— удаленка
— частичная занятость
— сдельная оплата в зависимости от количества задач
🔥 Оставляйте отклик, и мы свяжемся с вами: https://forms.gle/o4BZnsQ526JoqsCq9
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
Какое главное отличие std::mdspan от многомерного std::array?
Anonymous Quiz
10%
std::mdspan поддерживает только динамические размеры
53%
std::mdspan не владеет данными
7%
std::mdspan быстрее в доступе к элементам
4%
std::mdspan поддерживает только числовые типы
26%
std::mdspan требует C++23
🏖️ Подборка вакансий для C++-разработчиков за неделю
Разработчик C++ — до 220 000 ₽ Гибрид (Москва)
Middle C++ Разработчик — до 700 000₽ Офис (Москва)
Инженер-разработчик С++ — до 200 000 ₽ Гибрид (Москва)
Программист микроконтроллеров C++ — до 180 000₽ Офис (Новосибирск)
Senior C++ Developer/Tech Lead — от 400 000 ₽ Гибрид (Москва)
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
Библиотека C/C++ разработчика
Разработчик C++ — до 220 000 ₽ Гибрид (Москва)
Middle C++ Разработчик — до 700 000₽ Офис (Москва)
Инженер-разработчик С++ — до 200 000 ₽ Гибрид (Москва)
Программист микроконтроллеров C++ — до 180 000₽ Офис (Новосибирск)
Senior C++ Developer/Tech Lead — от 400 000 ₽ Гибрид (Москва)
➡️ Еще больше топовых вакансий — в нашем канале C++ jobs
Библиотека C/C++ разработчика
🔧 Как правильно передать данные в std::thread
Передача параметров в потоки — источник багов даже у опытных разработчиков. Главная проблема: время жизни объектов и способы передачи.
Пошаговое решение:
1️⃣ Используйте std::ref для ссылок
2️⃣ Копируйте простые типы по значению
3️⃣ Перемещайте тяжелые объекты через std::move
4️⃣ Избегайте сырых указателей
⚠️ Частые ошибки:
• Передача ссылок без std::ref
• Доступ к локальным переменным после их уничтожения
💡 При сомнениях используйте передачу по значению🤓
Библиотека C/C++ разработчика #буст
Передача параметров в потоки — источник багов даже у опытных разработчиков. Главная проблема: время жизни объектов и способы передачи.
Пошаговое решение:
1️⃣ Используйте std::ref для ссылок
2️⃣ Копируйте простые типы по значению
3️⃣ Перемещайте тяжелые объекты через std::move
4️⃣ Избегайте сырых указателей
#include <thread>
#include <string>
void process_data(int value, const std::string& text, std::vector<int>& result) {
// Обработка данных
result.push_back(value);
}
int main() {
int number = 42;
std::string message = "Hello";
std::vector<int> results;
// Правильная передача параметров
std::thread t(process_data, number,
std::cref(message), // const ссылка
std::ref(results)); // обычная ссылка
t.join();
return 0;
}
⚠️ Частые ошибки:
• Передача ссылок без std::ref
• Доступ к локальным переменным после их уничтожения
💡 При сомнениях используйте передачу по значению🤓
Библиотека C/C++ разработчика #буст
😡 А вас тоже бесят облачные сервисы?
Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить правила игры?
Мы готовим нечто особенное в мире облачных технологий, но сначала хотим услышать правду от тех, кто реально работает с облаками каждый день.
❓Что мы хотим узнать:
— Для чего вы реально используете облако?
— Чего катастрофически не хватает прямо сейчас?
— Что бесит больше всего? (можно материться)
— Как выбираете провайдера — по цене или по любви?
— и тому подобное
По результатам опроса мы подготовим исследование без маркетингового мусора и вы узнаете, как обстоят дела у коллег.
⚡️Время на опрос: меньше, чем на кофе-брейк. Жмите → https://clc.to/nboYDA
Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить правила игры?
Мы готовим нечто особенное в мире облачных технологий, но сначала хотим услышать правду от тех, кто реально работает с облаками каждый день.
❓Что мы хотим узнать:
— Для чего вы реально используете облако?
— Чего катастрофически не хватает прямо сейчас?
— Что бесит больше всего? (можно материться)
— Как выбираете провайдера — по цене или по любви?
— и тому подобное
По результатам опроса мы подготовим исследование без маркетингового мусора и вы узнаете, как обстоят дела у коллег.
⚡️Время на опрос: меньше, чем на кофе-брейк. Жмите → https://clc.to/nboYDA
Офер VK для бэкенд-разработчиков за выходные
VK проводит Weekend Offer для бэкенд-разработчиков. Если вы больше 3 лет пишете на Java, Go, Python или C++ — у вас есть все шансы получить приглашение на работу за 2 дня: технические собеседования 28 июня, а финалы, знакомство с командами и офер 29 июня.
Отправляйте заявку до 25 июня и станьте частью VK! Подробнее о мероприятии — на сайте.
VK проводит Weekend Offer для бэкенд-разработчиков. Если вы больше 3 лет пишете на Java, Go, Python или C++ — у вас есть все шансы получить приглашение на работу за 2 дня: технические собеседования 28 июня, а финалы, знакомство с командами и офер 29 июня.
Отправляйте заявку до 25 июня и станьте частью VK! Подробнее о мероприятии — на сайте.
🧱Статья: Управление зависимостями на C++ с помощью vcpkg
Автор статьи демонстрирует создание полноценной экосистемы управления зависимостями на базе vcpkg с собственными реестрами и серверным кэшированием.
❗️ Ключевые моменты статьи:
• создание
• сборка
• организация кэширования бинарей через nuget-сервер (как в Conan)
Основной фокус — практическое решение проблем крупных проектов, где нужен полный контроль над версиями зависимостей и их распространением в команде.
Особенно актуально для enterprise-проектов с жесткими требованиями к воспроизводимости сборок и
Вы узнаете, что
👉 Статья
Библиотека C/C++ разработчика
Автор статьи демонстрирует создание полноценной экосистемы управления зависимостями на базе vcpkg с собственными реестрами и серверным кэшированием.
❗️ Ключевые моменты статьи:
• создание
custom registry
с собственными портами Qt5/Boost
нужных версий• сборка
standalone
окружений, полностью отвязанных от основного vcpkg• организация кэширования бинарей через nuget-сервер (как в Conan)
Основной фокус — практическое решение проблем крупных проектов, где нужен полный контроль над версиями зависимостей и их распространением в команде.
Особенно актуально для enterprise-проектов с жесткими требованиями к воспроизводимости сборок и
CI/CD пайплайнами
.Вы узнаете, что
vcpkg
может быть не просто менеджером пакетов, а полноценной платформой для управления зависимостями с возможностями уровня корпоративных решений — при грамотной настройке инфраструктуры.👉 Статья
Библиотека C/C++ разработчика
⚡️ Фича дня: if consteval в C++23
Хотите разный код для compile-time и runtime? C++23 добавляет
🔴 До: Сложные трюки
🟢 После: Читаемый consteval
❗️ Практические применения:
• Оптимизированные математические библиотеки
• Compile-time криптография
• Генерация lookup-таблиц
💡Используете метапрограммирование в ваших проектах?
Библиотека C/C++ разработчика #буст
Хотите разный код для compile-time и runtime? C++23 добавляет
if consteval
для условной компиляции!🔴 До: Сложные трюки
template<typename T>
constexpr T compute() {
if (std::is_constant_evaluated()) {
return compile_time_version<T>();
}
return runtime_version<T>();
}
🟢 После: Читаемый consteval
template<typename T>
constexpr T compute() {
if consteval {
return compile_time_version<T>();
} else {
return runtime_version<T>();
}
}
• Оптимизированные математические библиотеки
• Compile-time криптография
• Генерация lookup-таблиц
💡Используете метапрограммирование в ваших проектах?
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Если необходимо быстро привести код к определённому стилю, то этом случае можно воспользоваться следующим промптом.
Rewrite the code below following the Google style guidelines for C++.
[Вставь свой код]
Было:
class userManager{
public:
int getUserCount(){return userCount;}
void setUserCount(int count){userCount=count;}
private:
int userCount;
};
void ProcessUserData(){
const int maxUsers=100;
userManager um;
for(int i=0;i<maxUsers;i++){
um.setUserCount(i);
}
}
Стало (после применения Google C++ Style Guide):
class UserManager {
public:
int GetUserCount() const { return user_count_; }
void SetUserCount(int count) { user_count_ = count; }
private:
int user_count_;
};
void ProcessUserData() {
const int MAX_USERS = 100;
UserManager user_manager;
for (int i = 0; i < MAX_USERS; ++i) {
user_manager.SetUserCount(i);
}
}
Что изменилось:
✅ Функции в
CamelCase
✅ Переменные в
snake_case
✅ Константы в
UPPER_CASE
✅ Правильные отступы и пробелы
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🌧️ Облачная терапия: время выговориться!
Знакомая ситуация? Покупаете облако как BMW, а получаете телегу с квадратными колесами. Обещают 99.9% uptime, а сервер падает на релизе. Техподдержка отвечает через сутки фразой «попробуйте перезагрузить».
Пора узнать, как обстоят дела с облаками на самом деле. Поэтому мы собираем ваши реальные истории про облачные сервисы.
🤫О чем спросим:
— Зачем вам вообще это облако нужно
— Какие косяки достали до печенок
— Сколько денег утекает в никуда ежемесячно
— Что должно случиться, чтобы вы сменили провайдера
— И еще пару каверзных вопросов
⏱️ 2 минуты честности = большое исследование без воды → https://clc.to/nboYDA
Знакомая ситуация? Покупаете облако как BMW, а получаете телегу с квадратными колесами. Обещают 99.9% uptime, а сервер падает на релизе. Техподдержка отвечает через сутки фразой «попробуйте перезагрузить».
Пора узнать, как обстоят дела с облаками на самом деле. Поэтому мы собираем ваши реальные истории про облачные сервисы.
🤫О чем спросим:
— Зачем вам вообще это облако нужно
— Какие косяки достали до печенок
— Сколько денег утекает в никуда ежемесячно
— Что должно случиться, чтобы вы сменили провайдера
— И еще пару каверзных вопросов
⏱️ 2 минуты честности = большое исследование без воды → https://clc.to/nboYDA
😎 Как начать писать свой проект на Unreal Engine 5
💡 Эта история — не просто дневник разработчика, а честный рассказ о боли, решимости и технических подводных камнях, с которыми сталкиваешься, когда решаешь написать свой VR-движок на UE5.
❗️Ключевые моменты:
• почему переход с Unity на Unreal не всегда гладкий
• как в одиночку освоить UE5 и C++ для написания плагинов
• какие возможности и ограничения есть у движка «из коробки»
Главный фокус — личный опыт перехода от
❗️Пост особенно полезен разработчикам, кто:
• планирует создавать сложные системы на UE5
• хочет понять реальную стоимость «модульной архитектуры»
• интересуется плагинами и расширениями движка на C++
💬 Итог: Unreal мощный, но не идеальный.
👉 История
Библиотека C/C++ разработчика
💡 Эта история — не просто дневник разработчика, а честный рассказ о боли, решимости и технических подводных камнях, с которыми сталкиваешься, когда решаешь написать свой VR-движок на UE5.
❗️Ключевые моменты:
• почему переход с Unity на Unreal не всегда гладкий
• как в одиночку освоить UE5 и C++ для написания плагинов
• какие возможности и ограничения есть у движка «из коробки»
Главный фокус — личный опыт перехода от
Java
и Unity
к полному погружению в экосистему Unreal Engine
с её модульной архитектурой, плагинами, Blueprints
и C++
.❗️Пост особенно полезен разработчикам, кто:
• планирует создавать сложные системы на UE5
• хочет понять реальную стоимость «модульной архитектуры»
• интересуется плагинами и расширениями движка на C++
💬 Итог: Unreal мощный, но не идеальный.
👉 История
Библиотека C/C++ разработчика
Проблема: Написание документации для C++ кода — трудоемкий процесс, который разработчики часто откладывают или вовсе пропускают.
Решение: Автоматическая генерация шаблонов документации
Doxygen
для классов и функций!• CLion: /** + Enter перед объявлением функции/класса
• VSCode (с Doxygen Documentation Generator): Ctrl+Alt+D
• Visual Studio: /// + Enter перед функцией
• Установите курсор перед объявлением функции или класса
• Введите /**
• Нажмите Enter
• IDE автоматически создаст шаблон документации со всеми параметрами.
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM